package com.rd.teacher.jichao.buke;

public class TestObject {

    public static void main(String[] args) {
        // 类中可能有什么?
        // 类的成员有哪些?

        // 属性/变量(创建对象时给它赋值的)
        // 构造器(创建对象时使用的 通过new关键字调用 其实默认返回类型是对象本身 所以不需要声明任何返回类型)
        //    代码块(多个构造器中相同代码抽取出来的)   (静态代码块，是类创建时就想要执行的)
        // 方法(创建对象后，通过对象调用的)  (静态方法，可以没有对象就调用)
        // 类本身(内部类)  如果说此成员需要是一个类别，但是又不被其他类使用，可以设计成内部类

        // 类有多少变种?
        // 接口、抽象类、枚举、不可变类(final)

        // 接口：一种规范，往往是没被实现，却需要被实现的，只要实现了它，就可以互相协作的
        //      将合作的方式规范化  任意的调用方只要符合规范，就可以和任意符合规范的执行方来合作

        // 抽象类： 一种模版，比如PPT模版
        //      首页 - part1 part2  - 数据可视化等等
        //      模版提供的是一种使用方式，一种样式，宽泛的可供参考的一些内容
        //      需要被继承实现的,  通过具体实现来覆盖那些宽泛的和抽象的

        // 枚举： 当使用这个类，类的对象是固定的个数，同时每个对象不需要再创建多个。
        //    红绿灯
        //    红灯、绿灯、黄灯
        //    有没有超出这个范围，或者能不能遍历所有的对象

        // foreach遍历
//        for (Light light : Light.values()) {
//            System.out.println(light);
//        }

        // 不可变类
//        String str = "123";
//        // 要注意final类中的所有成员方法都会被隐式地指定为final方法。但是final类中的成员变量默认不是final的。
//        char[] arrStr = str.toCharArray();
//        // String的本质是字符数组
//        str.charAt(0);

        // 练习题1
        // 编写5星级酒店: Hotel
        // 厨师,服务员,经理三个员工都有一些相同的属性和功能   Role
        // 只有厨师和服务员有vip服务,厨师vip服务是加菜,服务员vip服务是嘘寒问暖


        // 练习题2
        // 编写太阳岛公园  Park
        // 游玩路线、服务人员（经理、保安、导游）、小吃
        // 表演节目、游船项目、雪雕和冰雕（限时供应）

    }

}

enum Light {
    RED, GREEN, YELLOW;
}

class Hotel{

    Role chef = new Role("加菜");
    Role waiter = new Role("嘘寒问暖");
    Role manager = new Role("");

}

class Role{
    String vip;
    public Role(String vip){
        this.vip = vip;
    }
}